<?php
/**
 * Class Login{}
 * Responsavel em controlar o login da area administrativa
 */
class Login {
    /**
     * Verifica se usuario e senha estao corretos
     *
     * @return json Ira conter informaçoes do que fazer
     */
    public function loginAdmin() {
        $retorno = array();
        $session = new Sessao();
        $session->limpaValoresSessao();
        $trataDados = new TrataDados();
        
        if (isset($_GET['origem_externa']) && $_GET['origem_externa'] == "sim"){
            $_POST['usuario'] = $_GET['usuario'];
            $_POST['senha'] = $_GET['senha'];
        }
        
        if ( $trataDados->pegaDados() ) {
            $dados = $trataDados->getDados();
            try {
                $sql = "SELECT * FROM `usuarios` WHERE `usuario` = :usuario AND `senha` = MD5(:senha) AND `ativo` = TRUE";
                $pdo = Conexao::open('site'); 
                $consulta = $pdo->prepare($sql);
                $consulta->bindParam(':usuario', $dados['usuario'], PDO::PARAM_STR);
                $consulta->bindParam(':senha', $dados['senha'], PDO::PARAM_STR);
                $consulta->execute();
                $numeroRegistros = $consulta->rowCount(); 
                $linha = $consulta->fetch(PDO::FETCH_ASSOC);
                
                if ( $numeroRegistros == 1 ) {
                    $session->setValor('sessao_admin', 'sim');
                    $session->setValor('sessao_adm', $linha['adm']);
                    $session->setValor('sessao_usuario', $linha['usuario']);
                    $session->setValor('sessao_id_usuarios', $linha['id_usuarios']);
                    $session->setValor('sessao_ativa', 'administracao_6511');
                    $retorno['resultado'] = 'sim';
                } else if ( $this->inicializarBanco() ) {
                    $session->setValor('sessao_id_usuario', 1);
                    $retorno['resultado'] = 'inserir';
                } else {
                    $retorno['resultado'] = 'nao';
                }
                unset($pdo);
            } catch ( PDOException $e ) {
                if ( $e->getCode() == '3F000' ) {
                    $retorno['resultado'] = 'criar_tabela';
                } else {
                    new Excecao($e);
                    $retorno['resultado'] = 'erro';
                    $retorno['erro'] = 'consulta';
                }
            }
        } else {
            $retorno['resultado'] = 'dados_errados';
            $retorno['dados_errados'] = $trataDados->getErro();
        }
        return json_encode($retorno);
    }
    
    /**
     * Destruira a sessao
     *
     * @return json Ira retornar 'Sim' caso tenha dado tudo certo
     */
    public function logoffAdmin()
    {
        $retorno = array();
        $session = new Sessao();
        $session->limpaSessao();
        $retorno['resultado'] = 'sim';
        return json_encode($retorno);
    }
    
    /**
     * Verifica se banco esta limpo
     *
     * @return bool
     */
    private function inicializarBanco()
    {
        try
        {
            $pdo = Conexao::open('site'); // abre conexao com o banco
            $consulta = $pdo->prepare('SELECT COUNT(*) AS numero_registros FROM usuarios');
            $consulta->execute();
            $linha = $consulta->fetch(PDO::FETCH_ASSOC); // pega resultaqdo da consulta
            $pdo = null; // fecha conexao
            if ( $linha['numero_registros'] == 0 )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch ( PDOException $e )
        {
            new Excecao($e);
        }
    }
    
    public function loginHotel()
    {
        $retorno = array();
        
        $usuario = (empty($_POST['usuario'])) ? null : addslashes($_POST['usuario']);
        $senha = (empty($_POST['senha'])) ? null : addslashes($_POST['senha']);
        $retorno = array();
        $trataDados = new TrataDados();
        
        if ( $trataDados->pegaDados() )
        {
            $dados = $trataDados->getDados();
            
            try
            {
                $sql = 'SELECT
                            hotel.id_hotel
                        FROM
                            hospedagem.hotel
                        INNER JOIN
                            cadastros.empresa_participacao ON empresa_participacao.id_empresa_participacao = hotel.id_empresa_participacao
                        INNER JOIN
                            cadastros.edicao ON edicao.id_edicao = empresa_participacao.id_edicao
                        AND
                            edicao.ativo = true
                        WHERE
                            hotel.usuario = :usuario
                        AND
                            hotel.senha	= :senha;';
                
                $pdo = Conexao::open('sistema'); // abre conexao com o banco de dados
                $consulta = $pdo->prepare($sql);
                $consulta->bindParam(':usuario', $dados['usuario'], PDO::PARAM_STR);
                $consulta->bindParam(':senha', $dados['senha'], PDO::PARAM_STR);
                $consulta->execute();
                $numeroRegistros = $consulta->rowCount(); // retorna o numero de registros da consulta
                $linha = $consulta->fetch(PDO::FETCH_ASSOC); // pega dados da consulta
                $session = new Sessao();
                
                if ( $numeroRegistros == 1 )
                {
                    $session->setValor('sessao_id_hotel', $linha['id_hotel']);
                    $session->setValor('sessao_ativa', 'sistema_hotel_7893');
                    
                    $retorno['resultado'] = 'sim';
                }
                else
                {
                    $retorno['resultado'] = 'nao';
                }
                $pdo = null; // fecha conexao
            }
            catch ( PDOException $e )
            {
                new Excecao($e);
                $retorno['resultado'] = 'erro';
                $retorno['erro'] = 'consulta';
            }
        
        }
        else
        {
            $retorno['resultado'] = 'dados_errados';
            $retorno['dados_errados'] = $trataDados->getErro();
        }
        return json_encode($retorno);
    }

}
?>
